import axios from 'axios'
import store from '@/store'
import { Toast, Notify } from 'vant'
import { getToken } from '@/api/wxLogin.js'

const codeMessage = {
  200: '服务器成功返回请求的数据。',
  201: '新建或修改数据成功。',
  202: '一个请求已经进入后台排队（异步任务）。',
  204: '删除数据成功。',
  400: '发出的请求有错误，服务器没有进行新建或修改数据的操作。',
  401: '用户没有权限（令牌、用户名、密码错误）。',
  403: '用户得到授权，但是访问是被禁止的。',
  404: '发出的请求针对的是不存在的记录，服务器没有进行操作。',
  406: '请求的格式不可得。',
  410: '请求的资源被永久删除，且不会再得到的。',
  422: '当创建一个对象时，发生一个验证错误。',
  500: '服务器发生错误，请检查服务器。',
  502: '网关错误。',
  503: '服务不可用，服务器暂时过载或维护。',
  504: '网关超时。',
};

// 根据环境不同引入不同api地址
import { baseApi } from '@/config'
import Cookies from 'js-cookie';
// create an axios instance
const service = axios.create({
  baseURL: baseApi, // url = base api url + request url
  withCredentials: true, // send cookies when cross-domain requests
  timeout: 50000 // request timeout
})
// 默认读cookies的token 反之走写死的token
// const token = getToken()
// const token = getToken() || 'wechat-eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImEyNGFkMzBmLWVlN2UtNDgxYy04MzQ2LTk0MTFlMmYxZTIzOSJ9.UAIRYPzIlPYrYagxrYBlWQ8yyp4AMxHTkWHIRX5H87BX5uKwPluV_YxYx0v2WuwvhMcSMxXTtpxVJ8VFTb0fWQ'
// request拦截器 request interceptor
service.interceptors.request.use(
  config => {
    // 不传递默认开启loading
    if (!config.hideloading) {
      // loading
      Toast.loading({
        forbidClick: true
      })
    }
    // 默认读cookies的token 反之走写死的token
    const token = getToken()
    // const token = getToken() || 'wechat-eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImYxZmI5NjZmLTM1YTMtNDk4NS04ZWU5LWJjYmEzYzQ5NDZlYyJ9.-sXBKCuR7woKFtycgj0jI75_HF6qZxAM93818_Ros62Qw8W3lgfDgzSp_fbIx-NWolE3UbhQNCtTkOg5JqFBtQ'
    config.headers['Authorization'] = `Bearer ${token}`
    console.log('header',config.headers['Authorization'])
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)
// respone拦截器
service.interceptors.response.use(
  response => {
    Toast.clear()
    const res = response.data
    if (res.code !== 200) {
      if(res.code===401){
        console.log('401',res)
        Cookies.set('token','h5-guest');
        location.href = '/login';
        // next('/login')
        // Notify({
        //   type: 'warning', message: '无法获取资源,请重试'
        // })
      }else{
        console.log('!200 !401')
        // 接口返回错误
        Notify({
          type: 'warning', message: res.msg
        })
      }
      return Promise.reject(res || 'error')
    } else {
      return Promise.resolve(res)
    }
    // 下面为暂存历史逻辑
    if (res.status && res.status !== 200) {
      // 登录超时,重新登录
      if (res.status === 401) {
        store.dispatch('FedLogOut').then(() => {
          location.reload()
        })
      }
      return Promise.reject(res || 'error')
    } else {
      return Promise.resolve(res)
    }
  },
  error => {
    Toast.clear()
    const { response } = error;
    Notify({
      type: 'warning', message: codeMessage[response.status]
    })
    console.log('err' + error) // for debug
    return Promise.reject(error)
  }
)

export default service
